home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
tex
/
meta27
/
mfpandor.lzh
/
panlowers.mf
< prev
next >
Wrap
Text File
|
1990-11-16
|
41KB
|
1,037 lines
%*****************************************************************************
% Copyright (c) 1989 by N. N. Billawala
%*****************************************************************************
% lowers.mf lowercase roman alphabet
% 26 characters
vardef a_halfbowl= % letter a with half bowl
iff OK "a": "The letter a";
beginchar("a",a_w*width#+b_mono#,xheight#,0);
lft z9=(.1w,.9h)//;
rt z11r=(w,r_arch*h)//; multpos(11,13)(stem.lc,0);
bot rt z13r=(w,0);
onaline(11l,13l)(1l,1r,5,6,12l);
y1r=y1l+max(1,minor_curve.lc)=.52h+.75minor_curve.lc;
y5=.35[major_curve.lc-ov_b.lc,y1l];
y6=max(arch_thickness.lc,y5-arch_tip.lc);
onaline(11r,13r)(12r);
y12r=x_bracket_h; y12l=max(y12r,y1r);
top y10r=bot y10l+arch_thickness.lc=h+ov_t.lc;
good_x_for(10r)(z9,z12l,min(.95,arch_reference+.1 if singlepitch:+.05 fi))a;
good_x_for(10l)(z9,z10r,arch_inner_amt)b;
x10l:=max(x10l,x10r-arch_thickness.lc);
lft z3l=(0,.35[-ov_b.lc,y1r])//;
rt z3r=(lft x3l+max(1,.9bowlstem.lc),max(.4[-ov_b.lc,y1r],major_curve.lc));
y2=.75y1r; good_x_for(2)(z3l,z1r,.4)c;
ref1=terminalserif.r(z13,z11,z5,z12r,.5ts,base_terminal_angle)soft;
archtip:=arch_tip.lc; save arch_tip;
arch_tip.lc=min(archtip,minor_bowl_tip.lc,y5-arch_thickness.lc);
ref2=arch.bl(z5,-ov_b.lc,z3r,z3l)lc;
p1'=z3r{upward}...z1l{z1r-z2}--subpath(3,5)of ref2--cycle;
p1 =z1r{z2-z1r}...z3l{downward}--outer_juncture_path.br(ref2,ref1,2)--
z11r{upward} o_t bulb.tl(z9,z10l,z10r,.75cs,.5bulb_thickness,90) i_t
z12l{downward}..z1r & cycle;
showpoints(1,2,3,5,6,9,10,11,12,13);
adjust(v_f*fitbasis.lc#+m_cc*b_mfit#,v_b*fitbasis.lc#+m_c*b_mfit#);
show_character; endchar;
enddef;
def a_fullbowl= % the letter a with fullbowl
iff OK "a": "The letter a";
beginchar(97+alt0+alt2,b_w*width#+c_mono#,xheight#,0);
top rt z11r=(w,h)//; multpos(11,13)(stem.lc,0);
bot rt z13r=(w,0); pos10(max(1,.3stem.lc),0-oblique); % spur
onaline(11l,13l)(1l,2,5,6);
y1l=(h+ov_t.lc-minor_curve.lc)-minor_ductal.lc;
y2=y1l+minor_bowl_tip.lc;
y5=ductal[major_curve.lc-ov_b.lc,y1l];
y6=y5-minor_bowl_tip.lc;
onaline(11r,13r)(1r,10r,12r);
top y10=h; y12r=x_bracket_h; y1r=y1l-.5stem.lc;
lft z3l=(0,(1-v_stress)*h-.0*bowlstem.lc)//;
rt x3r=lft x3l+bowlstem.lc;
y3r=inlimit((1-v_stress)*h+.0*bowlstem.lc)(major_curve.lc,h-minor_curve.lc);
ref1=bowl.l(z5,-ov_b.lc,z1l,h+ov_t.lc,z3r,z3l);
ref3=(z1r soften(z10r,z10l) z2);
ref4=terminalserif.r(z13,z11,z5,z12r,.5ts,base_terminal_angle)soft;
if spur:ref2=outer_bowlpath(ref1); % bowl and spur
p1=outer_juncture_path.br(ref2,ref4,5)--ref3--cycle;
else:ref0=bowl.l(z5,-ov_b.lc,z1r,h+ov_t.lc,z3r,z3l); % bowl
ref2=outer_bowlpath(ref0);
p1=outer_juncture_path.br(ref2,ref4,5)--cycle; fi
p1'=bowl_counter(ref1)--cycle; % counter
showpoints(1,2,3,5,6,10,11,12,13);
adjust(v_c*fitbasis.lc#+m_cc*c_mfit#,v_a*fitbasis.lc#+m_c*c_mfit#);
show_character; endchar;
enddef;
def letter_a= save a,b,c;
vardef a=condition(spur)t; testing_codes; a_fullbowl; enddef;
vardef b=condition(spur)f; testing_codes;a_fullbowl; enddef;
vardef c=a_halfbowl; enddef;
if test_all_characters:a;b;c;else:if a_full_bowl:if spur:a;else:b;fi else:c;fi
fi
enddef;
letter_a; save letter_a,a_fullbowl,a_halfbowl;
def character_points=
iff OK "b": "The letter b";
beginchar(98+alt2,b_w*width#+c_mono#,ascender#,0);
top lft z11l=(0,h)//; multpos(11,14)(stem.lc,0);
bot lft z14l=(0,0);
z15l=z14l; pos15(max(1,.3stem.lc),0);
onaline(11r,14r)(1r,2,5,6,12r);
y1l=y1r=(minor_curve.lc-ov_b.lc)+minor_ductal.lc;
y2=y1r-minor_bowl_tip.lc;
y5=ductal[xheight+ov_t.lc-major_curve.lc,y1r];
y6=xheight+ov_t.lc;
y12r=max(y6,h-x_bracket_h);
onaline(11l,14l)(1l,12l,13l);
y13l=x_bracket_h;
y12l=max(h-x_bracket_h,y13l);
rt z3r=(w,v_stress*xheight+.0*bowlstem.lc)//;
lft x3l=rt x3r-bowlstem.lc;
y3l=inlimit(v_stress*xheight-.0*bowlstem.lc)
(minor_curve.lc,xheight-minor_curve.lc);
ref1=bowl.r(z5,xheight+ov_t.lc,z1r,-ov_b.lc,z3l,z3r);
ref3=(z1l soften(z15l,z15r) z2);
ref4=terminalserif.l(z11,z14,z12l,z12r,.5ts,asc_terminal_angle);
p1'=bowl_counter(ref1)--cycle; % counter
if spur:p1=outer_bowlpath(ref1)--ref4--ref3--cycle; % bowl and spur
else:ref0=bowl.r(z5,xheight+ov_t.lc,z1l,-ov_b.lc,z3l,z3r); % bowl
p1 =outer_bowlpath(ref0)--ref4--cycle; fi
showpoints(1,2,3,5,6,11,12,13,14,15,20,21);
adjust(v_a*fitbasis.lc#+m_c*c_mfit#,v_c*fitbasis.lc#+m_cc*c_mfit#);
show_character; endchar;
enddef;
vardef letter_b= save a,b;
vardef a=condition(spur)t; testing_codes;character_points; enddef; % spur
vardef b=condition(spur)f; testing_codes;character_points; enddef; % no spur
if test_all_characters:a;b; else:if spur:a; else:b; fi fi
enddef;
letter_b; save letter_b;
iff OK "c": "The letter c";
beginchar("c",c_w*width#+b_mono#,xheight#,0);
save_num(term_length)=if bulb_taper:c_and_s.lc else:.75cs fi;
min_limit(join_radius)(.5minor_curve.lc);
rt z1=(.95w,.9h)//;
lft z3l=(0,.5h)//;
rt z3r=(lft x3l+bowlstem.lc,.5h);
rt z5l=(w,major_curve.lc-ov_t.lc+.02h)//;
top y2l=bot y2r+minor_curve.lc=h+ov_t.lc;
bot y4l=top y4r-major_curve.lc=-ov_t.lc;
good_x_for(2l)(z3l,z1,.6)a; good_x_for(2r)(z3r,z1-(bulb_thickness,0),.6)b;
good_x_for(4l)(z3l,z5l,.5)c;
ref1=z4l{right}...z5l;
pos5(max(1,.7major_curve.lc),angle(direction 1 of ref1)+90);
good_x_for(4r)(z3r,z5r,.5)d;
x4r:=min(x4r,x4l+minor_curve.lc);
p1=(bulb.tr(z1,z2r,z2l,term_length,bulb_thickness,90) o_t
z3l{downward} o_t z4l{right} o_t z5l
if softpath:)softjoin(z5l--z5r)softjoin(else:--fi
z5r i_t z4r{left} i_t z3r{upward} i_t z2r{right})--cycle;
showpoints(1,2,3,4,5);
adjust(v_c*fitbasis.lc#+m_e*b_mfit#,v_h*fitbasis.lc#+m_ee*b_mfit#);
show_character; endchar;
iff OK "d": "The letter d";
beginchar("d",b_w*width#+c_mono#,ascender#,0);
top rt z11r=(w,h)//; multpos(11,14)(stem.lc,0);
bot rt z14r=(w,0);
z15r=(1.05w,0); pos15(max(1,.8stem.lc),0);
onaline(11l,14l)(1l,2,5,6,12l);
y1l=(xheight+ov_t.lc-minor_curve.lc)-minor_ductal.lc;
y2=y1l+minor_bowl_tip.lc;
y5=ductal[major_curve.lc-ov_b.lc,y1l];
y6=y5-minor_bowl_tip.lc;
onaline(11r,14r)(12r,13r);
y13r=x_bracket_h;
y12r=max(h-x_bracket_h,y13r); y12l=max(y12r,y1l);
lft z3l=(0,(1-v_stress)*xheight-.0*bowlstem.lc)//;
rt x3r=lft x3l+bowlstem.lc;
y3r=inlimit((1-v_stress)*xheight+.0*bowlstem.lc)
(major_curve.lc,xheight-minor_curve.lc);
ref1=bowl.l(z5,-ov_b.lc,z1l,xheight+ov_t.lc,z3r,z3l);
ref2=outer_bowlpath(ref1);
ref3=terminalserif.r(z14,z11,z5,z13r,.5ts,base_terminal_angle)soft;
p1'=bowl_counter(ref1)--cycle; % counter
p1 =terminalserif.l(z11,z14,z12l,z12r,.5ts,asc_terminal_angle) % stem
--outer_juncture_path.br(ref2,ref3,5)--cycle; % bowl
showpoints(1,2,3,5,6,11,12,13,14,15);
adjust(v_c*fitbasis.lc#+m_cc*c_mfit#,v_a*fitbasis.lc#+m_c*c_mfit#);
show_character; endchar;
iff OK "e": "The letter e";
beginchar("e",b_w*width#+d_mono#,xheight#,0);
min_limit(join_radius)(.5minor_curve.lc);
bot rt z1r=(.95w,round(.6h-.65*.8thin_stem.lc))//;
pos1(if narrow_condition:w_narrow_amt[thin_stem.lc,stem.lc]
else:max(1,.85stem.lc) fi,ebar_angle);
lft z3l=(0,(1-v_stress)*h)//;
rt z3r=(lft x3l+bowlstem.lc,y3l);
rt z5l=(w,.15h)//; pos5(minor_curve.lc,130-oblique);
top y2l=bot y2r+major_curve.lc=h+ov_t.lc;
bot y4l=top y4r-minor_curve.lc=-ov_t.lc;
good_x_for(2l)(z3l,z1r,.51)a; good_x_for(2r)(z3r,z1l,.49)b;
good_x_for(4l)(z3l,z5l,.5)c; good_x_for(4r)(z3r,z5r,.5)d;
x4r:=min(x4r,x4l+minor_curve.lc);
onaline(1l,1r)(40); x40=x41=0;
z42=z1r+(